﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;

namespace DissipativeInputProcessing
{
    public interface IFrame
    {
        /// <summary>
        /// Gets the image, representing current frame
        /// </summary>
        Bitmap Image { get; }
        /// <summary>
        /// Gets or sets the palette of this frame
        /// </summary>
        FramePalette Palette { get; set; }
        /// <summary>
        /// Gets or sets the data source of the image
        /// </summary>
        float[,] SourceData { get; set; }
        /// <summary>
        /// Tells the object to recompute image
        /// </summary>
        void Update();
        /// <summary>
        /// Tells the object to recompute image
        /// </summary>
        /// <param name="instantly">Initialize update right now or do it lazy</param>
        void Update(bool instantly);
        /// <summary>
        /// Gets description of the frame
        /// </summary>
        string Description { get; }
        /// <summary>
        /// Shows whether it's bitmap matches it's source
        /// </summary>
        bool IsUpToDate { get; }
        /// <summary>
        /// Gets the minimum value from the SourceData
        /// </summary>
        float MinSourceValue { get; }
        /// <summary>
        /// Gets the maximum value from the SourceData
        /// </summary>
        float MaxSourceValue { get; }
    }
}
